using System;
using System.Collections.Generic;
using System.Text;
using Pixysoft.Framework.XSchEmA.Entity;

namespace Pixysoft.Framework.XSchEmA.Comparer
{
    class UniqueComparer : IUniqueCompareResult
    {
        List<UniqueSchema> aSuplusUniques = new List<UniqueSchema>();
        List<UniqueSchema> bSuplusUniques = new List<UniqueSchema>();
        List<KeyValuePair<UniqueSchema, UniqueSchema>> sameUniques =
            new List<KeyValuePair<UniqueSchema, UniqueSchema>>();

        public IUniqueCompareResult Compare(DatabaseSchema aDatabase, DatabaseSchema bDatabase)
        {
            foreach (UniqueSchema aUnique in aDatabase.Uniques)
            {

                UniqueSchema bUnique = bDatabase.GetUnique(aUnique.TableName, aUnique.ColumnNames);
                if (bUnique != null)
                    sameUniques.Add(new KeyValuePair<UniqueSchema, UniqueSchema>(aUnique, bUnique));
                else
                    aSuplusUniques.Add(aUnique);
            }

            foreach (UniqueSchema bUnique in bDatabase.Uniques)
            {
                UniqueSchema aUnique = aDatabase.GetUnique(bUnique.TableName, bUnique.ColumnNames);
                if (aUnique == null)
                    bSuplusUniques.Add(bUnique);
            }

            return this;
        }

        public List<UniqueSchema> ASuplusUniques
        {
            get { return aSuplusUniques; }
            set { aSuplusUniques = value; }
        }
        public List<UniqueSchema> BSuplusUniques
        {
            get { return bSuplusUniques; }
            set { bSuplusUniques = value; }
        }
        public List<KeyValuePair<UniqueSchema, UniqueSchema>> SameUniques
        {
            get { return SameUniques; }
            set { SameUniques = value; }
        }
    }
}
